interface BizError extends Error {
    code: number
}

/* auth error code from 11000-12000 */
class BizAuthError implements BizError {
    message: string
    code: number
    name: string
    constructor(msg: string, code: number, name: string) {
        this.message = msg
        this.code = code
        this.name = name
    }
    // 注册用户已存在
    static UserExistError():BizError {
        return new BizAuthError("用户名已注册", 11001, 'auth error')
    }
    // 登录用户不存在
    static UserNotExist():BizError {
        return new BizAuthError("用户不存在", 11002, 'auth error')
    }
    // 无效的用户名
    static UsernameInvalid():BizError {
        return new BizAuthError("请输入正确的邮箱", 11003, 'auth error')
    }
    // 无效的密码
    static PasswordInvalid():BizError {
        return new BizAuthError("请输入超过6位的密码", 11004, 'auth error')
    }
    // 密码错误
    static PasswordWrong(): BizError {
        return new BizAuthError("密码错误", 11005, 'auth error')
    }
    // 用户未认证
    static UserUnauthed(): BizError {
        return new BizAuthError("用户未认证", 11006, 'auth error')
    }
    // 邮箱认证失败
    static EmailAuthFail(): BizError {
        return new BizAuthError("邮箱认证失败", 11007, 'auth error')
    }
}

export {
    BizAuthError
}
